#include <iostream>

class Ring {

		private:

		friend class myPolynomial{
			public:
					//! default constructor, return the zero polynomial
					Ring myring() const {return * __myself;}
					myPolynomial() : __myring(super) {}

		};

		public:
			typedef myPolynomial Polynomial;
			Ring(): __myself(this) {}
			Polynomial 	zero() {return Polynomial();}
		private:
			Ring* __myself;



};
 //				typedef Ring::Polynomial Polynomial;
 //				//! default constructor, return the zero polynomial
 //				Polynomial(const Ring const& r) __myring(r) {}
 //				Ring myring() const {return *__myring;}
 //		private:
 //				Ring const * __myring;
 //
 //};

int main(){
	Ring myring;
	typedef Ring::Polynomial Polynomial;
	Polynomial p=myring.zero();

	return 0;

}
